package com.aliyun.messagemgt.application.service;

import com.aliyun.messagemgt.dto.MessageTemplate;
import com.aliyun.messagemgt.dto.MessageTemplateParam;
import com.aliyun.messagemgt.dto.query.MessageTemplateQuery;
import com.aliyun.messagemgt.dto.vo.DepVo;
import com.aliyun.messagemgt.dto.vo.PendingEventForTemplateVO;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @Description
 * @Author hzw
 * @Date 2020/12/16 11:26
 * @Version 1.0
 */
public interface MessageTemplateService {

    /**
     * 修改消息模板
     *
     * @param add 消息模板
     * @return Integer
     */
    Integer templateModify(MessageTemplate add);

    /**
     * 查询消息模板列表
     *
     * @param query 消息模板
     * @return page
     */
    PageInfo<MessageTemplate> queryList(MessageTemplateQuery query);

    /**
     * 查询消息模板详情
     *
     * @param query 查询入参
     * @return 消息模板信息
     */
    MessageTemplate templateDetail(MessageTemplateQuery query);

    /**
     * 逻辑删除模板
     *
     * @param query 入参
     * @return Integer
     */
    Integer templateDelete(MessageTemplateQuery query);

    /**
     * 获取消息模板部门筛选列表
     *
     * @param query 入参
     * @return list
     */
    List<DepVo> deptList(MessageTemplateQuery query);

    /**
     * 保存更新
     * @param messageTemplate
     * @return
     */
    Integer saveTemplate(MessageTemplate messageTemplate);

    /**
     * 启停用
     * @param messageTemplate
     * @return
     */
    Integer updateStatus(MessageTemplate messageTemplate);

    /**
     * 逻辑删除
     * @param templateParam
     * @return
     */
    Integer isDelete(MessageTemplate templateParam);

    /**
     * 更新
     * @param messageTemplateParam
     * @return
     */
    Integer updateTemplate(MessageTemplate messageTemplateParam);


    /**
     * 根据id查询
     * @param templateId
     * @return
     */
    String queryByTemplateId(Long templateId);

    /**
     * 查询启用列表详情
     * @param query
     * @return
     */
    PageInfo<MessageTemplate> isEnabledList(MessageTemplateQuery query);

    /**
     * 数据校验
     * @param messageTemplateParam
     */
    void checkTemplate(MessageTemplate messageTemplateParam);

    Long queryTemplateCount();
}
